const arr = [10,60,50,445,412,4546,1231,44]
// 1. 需求取出数组中小于100的数据组成一个新数组
/* let newArr1 = [];
for (let i of arr) {
  if(i < 100) {
    newArr1.push(i);
  }
}
console.log(newArr1); */

// filter用法
let newArr1 = arr.filter(function (item) {
  return item < 100;
})
console.log(newArr1);

// 2. 需求将小于100的数据乘以2, 组成一个新数组
/* let newArr2 = [];
for (let i of newArr1) {
  newArr2.push(i*2);
}
console.log(newArr2); */

// map用法
let newArr2 = newArr1.map(function (item) {
  return item * 2;
})
console.log(newArr2);

// 3. 需求将newArr2中的数据全部相加
/* let sum = 0;
for (let i of newArr2) {
  sum += i;
}
console.log(sum); */

// reduce用法
let sum = newArr2.reduce(function (preValue, cur) {
  return preValue + cur;
})
console.log(sum);

// 以上的高级函数用法可以用链式编程
let sum2 = arr.filter(function (item) {
  return item < 100;
}).map(function (item) {
  return item * 2;
}).reduce(function (preValue, cur) {
  return preValue + cur;
})
console.log(sum2);

// 如果配合上箭头函数, 可以一行代码做完所有操作
let sum3 = arr.filter(item => item < 100).map(item => item * 2).reduce((preValue,cur) => preValue + cur,0);
console.log(sum3);

